using System;
using System.Windows.Forms;
using App.Modelo;

namespace App.Git.Vista.Widgets
{
    public partial class DatosReparacion : UserControl
    {
        private bool _clienteVisible;
        private bool estadoEditable = false;
        private bool resolucionEditable = false;

        public event EventHandler<EventArgs> ResolucionModified;
        public event EventHandler<EventArgs> EstadoModified;



        private Reparacion reparacion;

        public Reparacion Reparacion
        {
            get { return reparacion; }
            set 
            { 
                reparacion = value;
                if (reparacion != null)
                {
                    lblCliente.Text = reparacion.Cliente.ToString();
                    cmbEstado.SelectedItem= reparacion.Estado;
                    cmbResolucion.SelectedItem= reparacion.Resolucion;
                    lblFechaIngreso.Text = reparacion.Ingreso.ToString();
                    lblNroReparacion.Text = reparacion.Id.ToString();
                    lblTecnicoAsignado.Text = reparacion.TecnicoAsignado != null
                        ? reparacion.TecnicoAsignado.NombreVisible
                        : "-- Sin tecnico asignado --";
                }
                else
                {
                    lblCliente.Text =
                    lblFechaIngreso.Text =
                    lblNroReparacion.Text = "";

                    cmbEstado.SelectedIndex = -1;
                    cmbResolucion.SelectedIndex = -1;
                }
            }
        }

        public bool ClienteVisible
        {
            get { return _clienteVisible; }
            set  {
                _clienteVisible=tblCliente.Visible = value;
            }
        }

     
        public DatosReparacion()
        {
            InitializeComponent();
            cmbEstado.DataSource = Enum.GetValues(typeof(EstadoReparacion));
            cmbResolucion.DataSource = Enum.GetValues(typeof(ResolucionReparacion));

        }

        
        public bool EstadoEditable
        {
            get { return estadoEditable; }
            set { cmbEstado.Enabled = estadoEditable = value; }
        }

        public bool ResolucionEditable
        {
            get { return resolucionEditable; }
            set { cmbResolucion.Enabled = resolucionEditable = value; }
        }

        private void DatosReparacion_Load(object sender, EventArgs e)
        {

        }

        private void flowLayoutPanel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void cmbResolucion_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (reparacion != null)
                if ((ResolucionReparacion)cmbResolucion.SelectedValue != reparacion.Resolucion)
                    if (ResolucionModified != null)
                        ResolucionModified(this, new EventArgs());
        }

        private void cmbEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(reparacion!=null)
                if ((ResolucionReparacion)cmbEstado.SelectedValue != reparacion.Resolucion)
                    if (EstadoModified != null)
                        EstadoModified(this, new EventArgs());
        }

        private void lblTecnicoAsignado_Click(object sender, EventArgs e)
        {

        }
    }

}
